Nested tags - #710
Merged
Merged
Conversation
- levels are joined by forward slashes in the keywords - behaviour is opt-in for now - long paths are shortened if there is not enough display room Closes bulwarkmail#687.
If you carefully crafted your tags and then click this button by accident, all your hard work is gone. A confirmation message would be the other solution but since I have difficulty to grasp when you would need such a button, I propose to just remove it.
This code is nowhere used, so to prevent extra work during an upcoming refactor of tags, it is removed and some related tests are now actually made useful
Previously tags where very much focused on color coding email and less about adding additional information. They were also visualized in different ways in different locations. This commit gets rid of all "Color-coding" references, aligns visualization of the tags across the whole project and tries to improve user experience of using tags in general. A search box is shown in the tagging control so the user can quickly search for a tag if they have a huge (more than 10) amount of tags.
- Tags can now be removed straight from the email header - Tagging control now allows the user to (de)select multiple tags in one go
MathyV
marked this pull request as draft
July 29, 2026 17:53
MathyV
marked this pull request as ready for review
July 29, 2026 17:54
…nu markAsRead Nested tag toasts from drag-and-drop only showed the leaf name for non-root tags, contradicting the comment above it and making two same-named leaves under different parents (e.g. Personal/Receipts vs Work/Receipts) indistinguishable in the toast. The context menu's markAsRead handler was the one action left reading the stale contextMenu.data instead of the live-refreshed contextMenuEmail introduced alongside it, so it could act on outdated email state while every sibling handler was already updated.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR makes tags a lot more useful as a filtering mechanism. While the main objective was to add nesting of tags, I also tackled quite a lot of related UX improvements and I completely got rid of the Color-driven narrative, replacing it with a focus on actual tags and their meaning (which still, obviously, happen to have a color-coding).
Changes
Related issues
Closes #687
Type of change
Checklist
npm run typecheck && npm run lintand there are no errorsnpm run build)locales/) if my changes affect user-facing textScreenshots / demo
To save some time, rather than go through each individual change I just took a recording of me going through the changed things, I hope that is okay.
Notes for reviewers
This PR grew quite a bit larger then I intended to, but in the end all are related, accept the commit about the selected row tints which is a bugfix that just touches common code, so I hope that the individual commits offer enough clarity on how it grew.
I'm a bit on the fence about the default tags that are provided. I wanted in dev mode to be able to see the nested tags immediately, but if I'd introduce nested tags in the default set of tags, then we're also more or less obligated to enable it by default for all users so what is the point of the toggle then? Plus a nice set for dev testing is not per se a good default set for end users. I defined a second set of default tags that gets loaded when in dev mode, but I'm not sure if that is the cleanest solution.
Disclaimer: I used AI to generate the translations other than Dutch and English as I am no native speaker of 22 languages :-). I could not find documentation on how translations are normally done but the guidelines said I should commit them, so 🤷♂️ . I also added some extra Catalan translations that were causing the tests to fail.